/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.dataconverter.writer;

import br.dataconverter.reader.DataReaderCSV;
import br.dataconverter.util.DataColumn;
import br.dataconverter.writer.DataWrite;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.io.FileWriter;

import org.omg.CORBA.portable.UnknownException;

/**
 * 
 * @author Ronen Filho
 */
public class DataWriterCSV implements DataWrite {

	private File file;
	private String separador = "|";
	private static List<String> primeiraLinha = new ArrayList<>();
	private static List<String> linhas = new ArrayList<>();

	@Override
	public void setTitleColumns(List<String> dataColumns) {
		primeiraLinha = dataColumns;
	}

	@Override
	public void setColumns(List<DataColumn> dataColumns) {
		String linha;
		// List<String> linhas = new ArrayList<>();
		// Altura da matriz
		int size = dataColumns.get(0).getValues().size();

		for (int i = 0; i < size; i++) {
			linha = "";
			for (DataColumn coluna : dataColumns) {

				linha += (linha == "") ? coluna.getValues().get(i) : separador
						+ coluna.getValues().get(i);
			}
			linhas.add(linha);
		}

		// System.out.println(linhas);

		// teste de impressão dos valores
		/*
		 * for (String cell : dataColumns) System.out.print(cell + "");
		 */
	}

	public static List<String> getColumns() {

		return linhas;
	}

	@Override
	public void writeTo(File file) throws IOException {
		String nome = ""; // só um exemplo, crie todoas as variaveis que são
							// atributos dos objetos do array list
		String tituloConteudo = "";
		String conteudo;

		DataReaderCSV readerCSV = new DataReaderCSV();
		// readerCSV.setColumnsHeader(true);// default, alterar para parâmetro
		// readerCSV.getColumnsName();

		// System.out.println(readerCSV.getColumnsName());

		try {
			FileWriter f = new FileWriter(file, true);

			for (String coluna : primeiraLinha) {
				tituloConteudo += (tituloConteudo == "") ? coluna : separador
						+ coluna;
			}
			f.write(tituloConteudo + "\n");

			for (int i = 0; i < getColumns().size(); i++) {
				nome = getColumns().get(i); // chama o atributo do objeto na
											// posição i
				conteudo = nome;
				conteudo += "\r\n";
				f.write(conteudo);
			}
			f.close();

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
